package com.ibeeking.found.upms.g.rest.service;

import com.ibeeking.found.common.entity.CurrentUser;
import com.ibeeking.found.upms.service.common.bo.RoleBO;
import com.ibeeking.found.upms.service.common.param.GmcRoleParam;
import com.ibeeking.found.upms.service.common.query.GmcRolePageQuery;
import com.ibeeking.found.upms.service.common.vo.GmcRolePageVO;
import com.ibeeking.found.upms.service.common.vo.RoleSelectVO;
import com.ibeeking.found.upms.service.common.vo.RoleVO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.List;


/**
 * IGmcRoleService
 *
 * @Author ibeeking
 * @Date 2020-12-02 15:29
 */
public interface IGmcRoleService {

    /***
     * 分页查询角色列表
     * @param gmcRolePageQuery
     * @return
     */
    Page<GmcRolePageVO> pageList(GmcRolePageQuery gmcRolePageQuery);

    /***
     * 新增
     */
    Boolean add(GmcRoleParam gmcRoleParam);

    /***
     * 修改
     */
    Boolean modify(GmcRoleParam gmcRoleParam);

    /***
     * 通过id查询
     */
    RoleVO view(Long id);

    RoleBO queryById(Long id);

    /***
     * 修改状态
     */
    Boolean changeStatus(Long id, Integer status, Long userId);

    /***
     * 通过id删除
     */
    Boolean del(Long id);

    Long checkCode(String roleCode);

    Long checkName(String roleName);

    /**
     * 角色下拉列表
     *
     * @return
     */
    List<RoleSelectVO> selectRoleList(CurrentUser currentUser);

    List<String> queryUserIdsByRoleId(Long roleId);

    /**
     * 校验是否是管理员
     *
     * @param roleId
     * @return
     */
    Boolean checkIsAdministrator(Long roleId);
    /**
     * 校验是否是管理员
     *
     * @param roleIds
     * @return
     */
    Boolean checkIsAdministrator(List<Long> roleIds);

    Long selectAdministratorId();
}
